home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MacHack 1997
/
MacHack 1997.toast
/
Hacks
/
Hacks ’95
/
ClockDoubler
/
ClockDoubler.c
< prev
next >
Wrap
C/C++ Source or Header
|
1995-06-24
|
1KB
|
66 lines
#include <Retrace.h>
void HackInit(void);
typedef struct myVBLRecord_t
{
VBLTask myVBLTask;
long count;
} myVBLRecord;
void main(void)
{
EventRecord rec;
HackInit();
while (1)
WaitNextEvent(everyEvent, &rec, 0xffffffff, 0);
}
#pragma parameter __A0 getA0()
extern pascal long getA0()
ONEWORDINLINE(0x4e71);
void myVBL();
void myVBL()
{
myVBLRecord *rec = (myVBLRecord *)getA0();
if (++rec->count == 6)
{
unsigned long theTime;
OSErr err;
GetDateTime(&theTime);
err = SetDateTime(theTime+1);
if (err)
DebugStr("\pcould not get time");
rec->count = 0;
}
LMSetTicks(LMGetTicks()+9);
rec->myVBLTask.vblCount = 1;
}
struct jmpPtr
{
unsigned short jmp;
VBLUPP toWhere;
};
void HackInit(void)
{
myVBLRecord *rec = (myVBLRecord *)NewPtrSys(sizeof(myVBLRecord));
struct jmpPtr *jmper = (struct jmpPtr*)NewPtrSys(sizeof(6));
OSErr myErr;
if (rec && jmper)
{
jmper->jmp = 0x4ef9;
jmper->toWhere = (VBLUPP)myVBL;
rec->count = 0;
rec->myVBLTask.qType = vType;
rec->myVBLTask.vblAddr = (VBLUPP)jmper;
rec->myVBLTask.vblCount = 1;
myErr = VInstall((QElemPtr)rec);
if (myErr)
DebugStr("\pcould not install vbl task");
}
}